package net.dodoman.suanfa;
class ErFenFa {
	int[] iArray = { 1, 5, 9, 14, 27, 39, 41, 50, 62, 222, 345, 612, 981, 1207,
			8721 }; // 在此数字序列中寻找
	int iSeek = 345; // 寻找345的位置
	int iCount = 0; // 比较的次数

	public int xunhuan() {
		// 普通的循环法，最少需要比较一次，比如查找1，最多需要比较15次，比如8721
		for (int i = 0; i < iArray.length; i++) {
			iCount++;
			if (iSeek == iArray[i])
				break;
		}
		return iCount;
	}

	public int erfen() {
		// 二分法查找
		int iIndex = 0; // 相当于指针的东西
		int iStart = 0; //
		int iEnd = iArray.length - 1;
		while (true) {
			iCount++;
			iIndex = (iStart + iEnd) / 2;
			if (iArray[iIndex] < iSeek) {
				iStart = iIndex;
			} else if (iArray[iIndex] > iSeek) {
				iEnd = iIndex;
			} else {
				break;
			}
		}
		return iCount;
	}

	public static void main(String[] args) {
		ErFenFa eff = new ErFenFa();
		ErFenFa eff1 = new ErFenFa();
		System.out.println("普通的循环查找，需要比较的次数：" + eff.xunhuan());
		System.out.println("二分法查找，需要比较的次数：" + eff1.erfen());
	}
}